package com.biao.hashmap;

import java.util.HashMap;
import java.util.LinkedHashMap;

public class Demo08_LinkedHashMap {
    // LinkedHashMap支持两种顺序插入顺序 、 访问顺序
    // 插入顺序：先添加的在前面，后添加的在后面。修改操作不影响顺序
    // 执行get/put操作后，其对应的键值对会移动到链表末尾，所以最末尾的是最近访问的，最开始的是最久没有被访问的，这就是访问顺序。

    public static void main(String[] args) {
        HashMap<String, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("a", "a");
        linkedHashMap.put("b", "b");
        linkedHashMap.put("c", "c");

        linkedHashMap.put("a", "aaa");

        linkedHashMap.forEach((k, v) -> System.out.println("k: " + k + ", v: " + v));
        System.out.println();

        // 设置 accessOrder
        // 如果为true，就是访问顺序, false根据新增顺序
        HashMap<String, String> linkedHashMap2 = new LinkedHashMap<>(16, 0.75f, true);
        linkedHashMap2.put("a", "a");
        linkedHashMap2.put("b", "b");
        linkedHashMap2.put("c", "c");

        // 访问到元素后，改元素就会在最末尾位置，就明可以经常被使用
        linkedHashMap2.get("b");

        linkedHashMap2.forEach((k, v) -> System.out.println("k: " + k + ", v: " + v));


    }
}
